package top.itmeans.yes;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.TemplateType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.Collections;

/**
 * MyBatis Plus代码生成器
 * @author Yiming.Cao
 */
public class FastAutoGenerateRunner {

    /**
     * 数据源配置
     */
    private static final String URL = "jdbc:mysql://192.168.164.130:3306/yes?serverTimezone=Asia/Shanghai&characterEncoding=UTF-8&useSSL=false";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "$Cym@DB123";

    public static void main(String[] args) {
        DataSourceConfig.Builder dataSourceBuilder = new DataSourceConfig.Builder(URL, USERNAME, PASSWORD);
        FastAutoGenerator.create(dataSourceBuilder)
            .globalConfig(builder -> {
                builder.author("Yiming.Cao") // 设置作者
                        .enableSwagger() // 开启 swagger 模式
                        .fileOverride() // 覆盖已生成文件
                        .outputDir("F:\\DevFiles\\MyBatisPlus\\Yes"); // 指定输出目录
            })
            .packageConfig(builder -> {
                builder.parent("top.itmeans.yes") // 设置父包名
                        //.moduleName("mpg") // 设置父包模块名
                        .pathInfo(Collections.singletonMap(OutputFile.xml, "D:\\MPG\\yes")); // 设置mapperXml生成路径
            })
            .strategyConfig(builder -> {
                // 设置需要生成的表名，多个英文逗号分隔？所有输入 all
                builder.addExclude()
                        // 设置过滤表前缀
                        .addTablePrefix("t_", "c_","r_")
                        .controllerBuilder()
                        .enableRestStyle()  //使用REST风格
                        .serviceBuilder()
                        .formatServiceFileName("%sService") //Service文件名格式
                        .formatServiceImplFileName("%sServiceImpl") //Service实现类文件名格式
                        .entityBuilder()
                        .enableLombok() //实体类中使用Lombok相关注解
                        //.addTableFills(new Column("create_time", FieldFill.INSERT))
                        .build();
            })
            // 使用Freemarker引擎模板，默认的是Velocity引擎模板
            .templateEngine(new FreemarkerTemplateEngine())
            .execute();
    }
}

